home *** CD-ROM | disk | FTP | other *** search
-
- IMG2B_W
- -------------------------------------------------------------
-
- Ein Programm zur Umsetzung von Bildern im IMG-Format in das
- ImageLab B&W256-Format
-
-
-
- Übersicht
- ===============
-
- 0. Bedienung des Programms
-
- 1. Das IMG-Format
- 1.0 Einleitung
- 1.1 Umsetzungsverfahren
- 1.2 Probleme
-
- 2. Das XIMG-Verfahren
- 2.0 Einleitung
- 2.1 Umsetzungsverfahren
- 2.2 Probleme
-
- Anhang
- Bibliographie
-
- ***
-
-
-
- 0. Bedienung des Programms
- =====================================================================
-
- Das Programm kann grundsätzlich zwar in jeder Auflösung laufen,
- jedoch sollte sie 640x400 nicht unterschreiten, da dann einige
- Dialogboxen eventuell nicht auf den Bildschirm passen.
-
- Ansonsten ist es denkbar einfach zu bedienen, wenn man schon
- mal ein paar ST-Programme benutzt hat.
- Da bei jedem Programmstart maximal ein Bild konvertiert wird,
- folgt man einfach der Programmführung:
-
- 1. Beim Programmstart erscheint eine Infobox, die nur be-
- stätigt werden braucht (RETURN drücken oder Mausklick in
- die Box oder den OK-Button).
-
- 2. Es erscheint die bekannte ST-Datei-Auswahl-Box. Hier bitte
- die IMG-Datei auswählen, die konvertiert werden soll.
- (Abbruch verläßt das Programm)
-
- 3. Handelt es sich bei dem Bild um ein monochromes Bild, wird
- das Bild dargestellt, wenn der Monitor ebenfalls monochrom
- ist.
- Es erscheint in jedem Fall eine Dialog-Box, in der die
- Größe der Umsetzungsmatrix gewählt werden kann. Näheres
- hierzu bitte unter 1.1 nachlesen.
- Ein Mausklick auf den "Pfeil nach oben"-Button vergrößert
- das Raster auf maximal 16x16; ein Klick auf den "Pfeil nach
- unten"-Button verkleinert das Raster auf minimal 1x1.
- Im unteren Teil der Maske wird die Größe des Zielbildes und
- die Anzahl der Graustufen angezeigt, die sich aus der ge-
- wählten Rastergröße ergibt.
- OK verzweigt zur Datei-Auswahl (Punkt 5); Abbruch verläßt das
- Programm.
-
- 4. Handelt es sich bei der gewählten Datei um ein Bild im XIMG-
- Format erscheint die erwähnte Dialogbox nicht.
-
- 5. Die Datei-Auswahl-Box wird aufgeblendet und wartet auf die
- Wahl des Names der Zieldatei. OK startet das Umsetzungs-
- Verfahren, Abbruch verläßt das Progamm.
-
- 6. Das Fortschreiten der Umsetzung wird in einer Box graphisch
- dargestellt.
-
- 7. Das Programm beendet sich und kehrt zum Desktop zurück.
-
-
-
-
- 1. Das IMG-Format
- =====================================================================
-
- 1.0 Einleitung
-
- Das IMG-Format ist eine Form der Bildkompression, die im
- Atari-Universum recht weit verbreitet ist, da es einige
- wichtige Vorteile gegenüber anderen Kompressionsverfahren
- bietet.
- Zum einen es nicht an ein bestimmtes Graphik-Programm ge-
- bunden (hier hat fast jedes Programm immer noch sein eigenes
- Format, das von anderen Programmen nicht immer verarbeitet
- werden kann), zum anderen ist es eine der wenigen Möglich-
- keiten Bilder beliebiger Größe abzuspeichern.
-
- Das Format selbst besteht zunächst aus einem Kopf von
- mindestens acht 16-Bit-Worten im 68000-Format:
-
- Wort 0: Version der IMG-Datei
- Wort 1: die Länge des Kopfes der IMG-Datei in
- 16-Bit-Worten
- Wort 2: die Anzahl der Planes (Farbebenen) der
- IMG-Datei; entspricht der Anzahl von Bits
- pro Pixel, d.h. eins für Schwarz/Weiß-
- Bilder und z.B. vier für Bilder mit 16
- Farben.
- Wort 3: interne Verwendung bei Dekompression
- Wort 4: Breite eines Pixels in Micrometern
- Wort 5: Höhe eines Pixels in Micrometern
- Wort 6: Breite des Bildes in Pixeln
- Wort 7: Höhe des Bildes in Pixeln
-
- Da ich an dieser Stelle nicht auf die Komprimierung selbst
- eingehen will, da sie zum einen sehr komplex, zum anderen
- für die Nutzung des Programms nicht weiter wichtig ist, soll
- hier das dritte Wort des Kopfsatzes nicht weiter erläutert
- werden.
- Wen das Verfahren interessiert, der findet eine ausführliche
- Beschreibung in [GEI0].
-
- Wie man leicht erkennen kann, sind die Worte 2, 6 und 7 die
- wichtigsten zur weiteren Verarbeitung des Bildes, da sie
- die Größe festlegen. Weil die Verbreitung des IMG-Verfahrens
- für Schwarz-Weiß-Bilder weit größer ist als für Farbbilder
- und ImageLab nur Schwarz-Weiß-Bilder verarbeitet, gehen wir
- zunächst davon aus, daß wir es mit einem monochromen Bild
- zu tun haben (Wort 2 also eins ist).
-
-
- 1.1 Umsetzung
-
- Die Bilder, die von ImageLab verarbeitet werden, sind zwar
- auch Schwarz-Weiß, haben aber anstatt zwei Graustufen (näm-
- lich genau Schwarz und Weiß) bis zu 256 verschiedene.
- Man muß also versuchen, aus den zwei vorhandenen Werten,
- eine möglichst große Vielfalt von Werten zu konstruieren
- und den Bildinhalt trotzdem möglichst originalgetreu zu
- übernehmen.
- In den meisten Fällen ist dies gar nicht so schwierig. Viele
- Programme benutzen eine bestimmte Rasterung um im berühmten
- Monochrommodus des ST dem Auge eine größere Anzahl von Grau-
- stufen vorzumachen als tatsächlich vorhanden ist.
- Betrachtet man z.B. statt eines einzelnen Punktes eine Gruppe
- von 2x2 Punkten, so kann man anstatt zwei Graustufen fünf
- unterscheiden:
-
- ----- ----- ----- ----- -----
- | | | | |XX| | |XX| |XX|XX| |XX|XX|
- |--|--| |--|--| |--|--| |--|--| |--|--|
- | | | | | | |XX| | |XX| | |XX|XX|
- ----- ----- ----- ----- -----
- 0 1 2 3 4
-
- 0 = kein Punkt gesetzt, 1 = ein Punkt gesetzt .. 4 = alle
- vier Punkte im 2x2 Raster gesetzt.
-
- Diese Eigenschaft eines Bildes kann man sich bei der Um-
- setzung zu Nutze machen, indem man jeweils vier Punkte des
- Originalbildes zu einem Punkt im neuen ImageLab-Bild zu-
- sammenfaßt und so ein Bild mit fünf Graustufen erhält.
- Dieses Bild ist natürlich kleiner als das Originalbild -
- ein Bild der Größe 320x200 (64000 Pixel) schrumpft um Faktor
- vier auf 160x100 (16000 Pixel).
-
- Fünf Graustufen sind natürlich nicht besonders viel, was
- die Bildverarbeitung betrifft sogar geradezu lächerlich.
- ImageLab ist für eine Weiterverarbeitung auf eine größt-
- mögliche Anzahl von Graustufen angewiesen.
- Deshalb bietet IMG2B_W ab Version 1.4 die Möglichkeit die
- Größe des Rasters und damit die Anzahl der Graustufen bei
- jedem Bild individuell festzulegen.
- Ein guter Startwert ist das 8x8-Raster, das 65 Graustufen
- umsetzt. Der Trade-off zwischen Anzahl der Graustufen und
- Größe und damit auch Detailtreue des Zielbildes ist offen-
- sichtlich. Aber hier sind der Experimentierfreudigkeit keine
- Grenzen gesetzt: Einfach mal ein Bild mit verschiedenen Ein-
- stellungen abspeichern, und dann in ImageLab laden um die
- Unterschiede zu sehen und die optimale Lösung zu finden.
-
-
- 1.2 Probleme
-
- Kein Programm ohne irgendwelche Einschränkungen...
-
- - IMG2B_W ist geschwindigkeits- nicht speicherplatzoptimiert.
- Dies sollte allerdings normalerweise kein allzu großes
- Problem darstellen.
- Eins meiner Testbilder ist ein Ausschnitt aus einem ein-
- gescannten Bild mit einer Größe von 1092x1278. Das ge-
- packte IMG-Bild ist 97757 Byte groß, das ungepackte Bild
- nimmt etwa 170 KByte in Anspruch, eine 8x8-Umsetzung nur
- weitere 21 KByte.
- Von einer zu kleinen Rasterung sollte allerdings Abstand
- genommen werden: ein 2x2-Umsetzung benötigt ca. 340 KB,
- eine 1x1-Umsetzung etwa 1.33 MByte. Diese ist dann auch
- noch besonders sinnlos, da sie nur zwei Graustufen besitzt
- und ImageLab damit praktisch kaum etwas anfangen kann.
- Die Alternative, das Bild nicht im Speicher umzusetzen,
- sondern direkt auf den Datenträger zu schreiben, wurde
- nach einigen Tests aufgegeben, da sich das Speichern hier-
- bei um einen zweistelligen Faktor verlangsamt und statt
- einiger Sekunden mehrere Minuten in Anspruch nimmt.
-
- - Aus der Beschreibung des IMG-Kopfsatzes kann man ersehen,
- daß es keine Möglichkeit gibt zu erkennen, ob tatsächlich
- ein IMG-Bild vorliegt. Ist die Datei, die man versucht
- zu laden keine gültige IMG-Datei oder eventuell unvoll-
- ständig oder beschädigt, so kann das vom Programm nicht
- abgefangen werden.
-
- - Die Worte 0, 4 und 5 des Kopfsatzes werden nicht ausge-
- wertet.
-
- Das IMG-Format ist schon etwas älter. Zwar hat man bei der
- Festlegung an Erweiterungen gedacht (die Länge des Kopfsatzes
- ist flexibel), aber einige wichtige Voraussetzungen für die
- Nutzung als modernes Bildkompressionsverfahren fehlen doch.
- So ist es z.B. möglich Farbbilder zu verarbeiten, wenn das
- Bild mehrere Farbebenen (Planes) besitzt. Zwar ist die Be-
- nutzung von Planes mit einer zugehörigen Farbtabelle auf dem
- ST durchaus üblich, doch es fehlt leider eine Beschreibung,
- wie und wo die Belegung der Farbtabelle abzuspeichern ist.
- Und die Zeit der fixen Farbtabellen liegt nun wirklich schon
- seit längerer Zeit hinter uns.
- Dies bringt mich zu folgendem Punkt...
-
-
-
-
- 2. Das XIMG-Format
- =====================================================================
-
- 2.0 Einleitung
-
- Das XIMG-Format ist der Versuch dem IMG-Standard die fehl-
- ende Farbe zu geben...
- Hierbei wird der IMG-Kopf um einen XIMG-Teil erweitert, in
- dem die Farbtabelle des Ursprungsbildes abgelegt wird.
- Die folgende Liste versteht sich also als Fortsetzung von
- der Kopfsatz-Beschreibung unter 1.0:
-
- Wort 8: muß den Wert 22601 (0x5849) enthalten
- Wort 9: muß den Wert 19783 (0x4d47) enthalten
- Worte 8 und 9 dienen zur Identifikation des
- XIMG-Teil des Kopfsatzes. Liest man die beiden
- Worte byteweise, so ergibt sich:
- 0x58 0x49 0x4d 0x47 == 'X' 'I' 'M' 'G'
- Wort 10: Farbmodell 0..3 (s.u.)
- Wort 11: Farbe 0 - Anteil 0
- Wort 12: Farbe 0 - Anteil 1
- Wort 13: Farbe 0 - Anteil 2
- Wort 14: Farbe 1 - Anteil 0
- Wort 15: Farbe 1 - Anteil 1
- Wort 16: Farbe 1 - Anteil 2
- : :
- : :
- Wort n-3:Farbe f - Anteil 0
- Wort n-2:Farbe f - Anteil 1
- Wort n-1:Farbe f - Anteil 2
-
- Dabei entspricht n dem Wort 1 des Kopfsatzes; die Anzahl
- der Farben f ergibt sich aus Wort 2:
- 2^(Anzahl der Ebenen) = Anzahl der Farben.
-
- Um das Format so flexibel wie möglich zu halten, hat man
- sich nicht auf ein Farbmodell festgelegt. Auf dem ST setzen
- sich die Farben aus einem Rot-, einem Grün- und einem Blau-
- anteil zusammen. Nach den Anfangsbuchstaben RGB-Modell ge-
- nannt.
- Da Farbmodelle wieder ein Thema für sich sind, sollen die
- anderen nur kurz erwähnt werden:
- CYM - nach cyan, yellow, magenta;
- man sieht, daß RGB eigentlich für red, green,
- blue steht;
- HLS - Hue, Lightness, Saturation;
- Pantone- Pantone-Verfahren
-
- Die Farbmodelle werden in [FOL0] näher betrachtet. Eine
- Beschreibung des XIMG-Verfahrens findet man in [GEI1].
-
-
- 2.1 Umsetzung
-
- Bei der Umsetzung eines Bildes, das im XIMG-Format vor-
- liegt, wird ein Pixel im Originalbild in einen Pixel im
- Zielbild überführt. Es gibt hier keine Umsetzungsmatrix
- und so auch keine Möglichkeit die Konvertierung zu beein-
- flussen.
-
- Als Beispiel soll ein Bild betrachtet werden, daß mit dem
- RGB-Modell abgespeichert wurde. Nach dem Einlesen wird
- zunächst die Farbtabelle konvertiert. Dabei muß jeder Farbe,
- zu der die drei Anteile Rot, Grün und Blau vorliegen, ein
- Grauwert zugeordnet werden.
- Dies ist nicht so trivial, wie man vielleicht denkt, da von
- den drei Farben nicht dieselbe Helligkeit ausgeht. Ein
- Monitor/Fernseher, der ein gleichmäßig blaues Bild ohne Rot-
- und Grünanteil zeigt, strahlt wesentlich weniger Helligkeit
- ab, als einer, der ein grünes Bild zeigt.
- Deshalb kommt bei der Umsetzung das YIQ-Verfahren zum Ein-
- satz ([FOL0]). YIQ ist ein weiteres Farbmodell, das in den
- USA zur Übertragung von Fernsehsignalen genutzt wird. Das
- ursprüngliche RGB-Signal wird in ein YIQ-Signal gewandelt,
- bei dem die Helligkeitsinformation in der Y-Komponente und
- die Farbinformation in der I- und Q-Komponente steckt.
- Kommt das Signal in einem Farbfernsehgerät an, wird es wieder
- in ein RGB-Signal gewandelt. Kommt es jedoch in einem S/W-
- Gerät an, wird nur die Y-Komponente gezeigt.
- Alles, was man tun muß, ist also, die Y-Komponente zu bilden,
- die bei der Konvertierung von RGB nach YIQ anfällt und man
- hat eine Helligkeitsstufe, die der der ursprünglichen Farbe
- entspricht.
-
- Die Formel dafür lautet:
-
- Y = 0.299 * R + 0.587 * G + 0.114 * B
-
- Um das Programm nicht mit überflüssiger Fließkommazahlen-
- Berechung zu überlasten, führe ich diese Berechnung mit
- Integerzahlen durch. Dies führt zu einer geringfügigen
- Abweichung dieser Formel, nämlich:
-
- Y' = 0.2987 * R + 0.5859 * G + 0.1149 * B
-
- Die Abweichung ist aber selbst bei maximaler Intensiät
- kleiner als 0.29 Graustufen, sollte also ertragbar sein.
-
- Für jeden Punkt im Bild wird also bei der Umsetzung die
- Farbe in eine Helligkeitsstufe gewandelt. Die Anzahl der
- Graustufen des Zielbildes entspricht folglich der Anzahl
- der Farben des Originalbildes.
-
-
- 2.2 Probleme
-
- - Die Umsetzung wurde für Bilder getestet, die im RGB-
- Format vorliegen. Andere Bilder hatte ich nicht zur Ver-
- fügung und ich weiß auch nicht, warum jemand ein anderes
- Verfahren auf dem ST benutzen sollte, aber ausschließen
- kann man das natürlich nie.
- Das Programm funktioniert rein theoretisch auch für das
- CYM-Modell, auf der Grundlage
- R = 1 - C; G = 1 - M; B = 1 - Y;
- Aus Mangel an Daten habe ich das aber, wie erwähnt, nie
- testen können.
- Das HSL-Modell wird z.Z. nicht unterstützt, da mir die
- Umsetzung zu ausfwendig erschien und ich keinen kenne,
- der es benutzt.
- Für das Pantone-Verfahren fehlen mir die entsprechenden
- Daten. Allerdings kann ich mir auch hierfür nicht vor-
- stellen, daß es sehr viele Leute vermissen werden.
-
- - Es werden nur Farbtabellen bis maximal 256 Farben unter-
- stützt.
-
-
-
- Anhang
- =====================================================================
-
-
- Bibliographie
-
- FOL0 Foley, James D. [et al.]
- "Computer Graphics, principles and practice"
- Addison-Wesley, 1990
-
- GEI0 Geiß, Jürgen; Geiß, Dieter
- "Softwareentwicklung auf dem Atari ST"
- Hüthig, 1987
-
- GEI1 Geiß, Dieter; Geiß, Jürgen
- "Vom Anfänger zum GEM-Profi;
- Perfekte Programmierung auf Atari ST und IBM-PC"
- Hüthig, 1991
-
-
-
-
-
- SvB, 23. Januar 1993
-